<?php
namespace app\api\controller;
use app\common\controller\BaseApi;
/**
 * 进出日志管理
 */
class BehaviorLog extends  BaseApi
{
	function _initialize(){
	}
	/**
	 * 新增成功的记录(入场)
	 * @param $interface 卡信息
	 * @param $breackmachine_no 闸机编号
	 * @param $sub_time 扣次时间
	 */
	function add_success_in_log($interface,$brakemachine_no,$sub_time=null,$face_url=''){
		db("BehaviorLog")->insert(
		array(
			'behavior_type'=>1,
			'create_time'=>date('Y-m-d H:i:s'),
			'behavior_status'=>1,
			'card_no'=>$interface['card_no'],
			'in_brakemachine_no'=>$brakemachine_no,
			'in_time'=>date('Y-m-d H:i:s'),
			'sub_time'=>empty($sub_time)?null:$sub_time,
			'name'=>$interface['name'],
			'mobile'=>$interface['mobile'],
			'member_id'=>$interface['member_id'],
			'desc'=>null,
			'owner_type'=>$interface['owner_type'],
			'shop_id'=>$interface['shop_id'],
			'face_url'=>$face_url,
			)
		);
		$this->_update_varifycode($interface['card_no'],$interface['shop_id'],$interface);
		return;
	}
	
	/**
	 * 新增成功的记录(出场)
	 * @param $behavior_log 入场记录
	 * @param $breackmachine_no 闸机编号
	 */
	function add_success_out_log($behavior_log,$brakemachine_no,$face_url=''){
		$behavior_log['behavior_status']=1;
		$behavior_log['out_brakemachine_no']=$brakemachine_no;
		$behavior_log['out_time']=date('Y-m-d H:i:s');
		if(strlen($face_url)>10){
			if(strlen($behavior_log['face_url'])>10){
				$behavior_log['face_url']=$behavior_log['face_url'].",".$face_url;	
			}
		}
		db("BehaviorLog")->update($behavior_log);
		return;
	}
	/**
	 * 新增失败记录（进场）
	 * @param $interface 卡信息
	 * @param $breackmachine_no 闸机编号
	 * @param $error_msg 错误原因
	 */
	function add_error_in_log($interface,$brakemachine_no,$error_msg){
	 	db("BehaviorLogError")->insert(
	 	array(
			'behavior_type'=>1,
			'create_time'=>date('Y-m-d H:i:s'),
			'behavior_status'=>2,
			'error_msg'=>$error_msg,
			'card_no'=>$interface['card_no'],
			'in_brakemachine_no'=>$brakemachine_no,
			'in_time'=>date('Y-m-d H:i:s'),
			'sub_time'=>null,
			'name'=>$interface['name'],
			'mobile'=>$interface['mobile'],
			'member_id'=>$interface['member_id'],
			'desc'=>null,
			'owner_type'=>$interface['owner_type'],
			'shop_id'=>$interface['shop_id']
			)
		);
		return;
	}
	/**
	 * 新增失败记录（出场）
	 * @param $interface 卡信息
	 * @param $breackmachine_no 闸机编号
	 * @param $error_msg 错误原因
	 * @param $type=0 是否临时出场
	 */
	function add_error_out_log($interface,$brakemachine_no,$error_msg){
	 	db("BehaviorLogError")->insert(
	 	array(
			'behavior_type'=>1,
			'create_time'=>date('Y-m-d H:i:s'),
			'behavior_status'=>2,
			'error_msg'=>$error_msg,
			'card_no'=>$interface['card_no'],
			'out_brakemachine_no'=>$brakemachine_no,
			'out_time'=>date('Y-m-d H:i:s'),
			'sub_time'=>null,
			'name'=>$interface['name'],
			'mobile'=>$interface['mobile'],
			'member_id'=>$interface['member_id'],
			'desc'=>null,
			'owner_type'=>$interface['owner_type'],
			'shop_id'=>$interface['shop_id']
			)
		);
		return;
	}
	/**
	 * 新增柜号记录
	 * @param $interface 卡号信息
	 * @param $cabinet_nos 柜号记录
	 * @param $shop_id 店铺id
	 */
	function add_cabinet_no($interface,$cabinet_nos,$shop_id){
		  if(empty($cabinet_nos)){
		  	  return;
		  }
		  $cabinet_nos=explode(",",$cabinet_nos);
		  foreach ($cabinet_nos as $key => $value) {
				 if(!empty($value)){
				 	  db("Cabinet")->insert(
				 	  array(
				 	  						"cabinet_no"=>$value,
				 	  					 	"name"=>$interface['name'],
				 	  					 	"mobile"=>$interface['mobile'],
				 	  					 	'card_no'=>$interface['card_no'],
				 	  					 	'owner_type'=>$interface['owner_type'],
				 	  					 	'member_id'=>$interface['member_id'],
				 	  					 	'shop_id'=>$interface['shop_id']
				 	  		)			 	
						);
				 }	  	
		  }
		  return;
	}
    /**
	 * 判断上次是否刷了入场
	 * @param $interface 会员信息
	 * @param $system_set 系统设置信息
	 */
	 function sequence_judge_in($interface,$system_set,$brakemachine_no){
	 	   if($interface['owner_type']==1||$interface['owner_type']==3||$interface['owner_type']==5){// 会员/临时卡/副卡
	 	   	     if($system_set['s_s_3']==1){// 需要顺序验证
	 	   	     
	 	   	     }else{//不需要顺序验证
	 	   	     	  return;
	 	   	     }
	 	   }elseif($interface['owner_type']==2){//员工
	 	   		if($system_set['s_s_4']==1){// 需要顺序验证
	 	   	     	
	 	   	     
	 	   	     }else{//不需要顺序验证
	 	   	     	  return;
	 	   	     }
	 	   }
		   $model=db("BehaviorLog")->field("card_no,in_time,out_time")->where("shop_id=".$interface['shop_id']." and card_no='".$interface['card_no']."'")->order("id desc")->find();
		    if(empty($model)){
		    	$this->add_error_in_log($interface,$brakemachine_no,"您还没有刷入场");
		      return $this->ajax_error("","","您还没有刷入场",false);
		    }
		    if(!empty($model['in_time'])&&empty($model['out_time'])){
		    	return;
		    }else{
		    	$this->add_error_in_log($interface,$brakemachine_no,"您还没有刷入场");
		      return $this->ajax_error("","","您还没有刷入场",false);
		    }
	 }
	 
	 /**
	 * 判断上次是否刷了出场
	 * @param $interface 会员信息
	 * @param $system_set 系统设置信息
	 */
	 function sequence_judge_out($interface,$system_set,$brakemachine_no){
	 	   if($interface['owner_type']==1){// 会员
	 	   	     if($system_set['s_s_3']==1){// 需要顺序验证
	 	   	     
	 	   	     }else{//不需要顺序验证
	 	   	     	  return;
	 	   	     }
	 	   }elseif($interface['owner_type']==2){//员工
	 	   		if($system_set['s_s_4']==1){// 需要顺序验证
	 	   	     	
	 	   	     
	 	   	     }else{//不需要顺序验证
	 	   	     	  return;
	 	   	     }
	 	   }else{// 临时卡不需要验证进出顺序
	 	   	    return;
	 	   }
		   
		   $model=db("BehaviorLog")->field("card_no,in_time,out_time")->where("shop_id=".$interface['shop_id']." and card_no='".$interface['card_no']."'")->order("id desc")->find();
		    if(empty($model)){
		    	return;
		    }
		    if(empty($model['out_time'])){
		    	$this->add_error_in_log($interface,$brakemachine_no,"您还没有刷出场");
		       return	$this->ajax_error("","","您还没有刷出场",false);
		    }
	 }
	 /**
	  * 前台验证后进入闸机  修改验证记录
	  */
    function _update_varifycode($card_no,$shop_id,$interface){
    	if($interface['in_varifycation_type']==3){
    		$record=db("VarifyRecord")->where("card_no='$card_no' and shop_id=$shop_id")->order("id desc")->find();
			if(!empty($record)&&$record['is_in']==0){
				db("VarifyRecord")->update(array('id'=>$record['id'],'is_in'=>1,"in_time"=>date("Y-m-d H:i:s")));
			}
    	}
    }
	/**
	 * 新增区域门禁进场记录 成功
	 */
	function add_innerdoor_in_success($interface,$brakemachine_no){
		$brakemachine_no=intval($brakemachine_no);
		$card_no=$interface['card_no'];
		$door_name=db("SlidingDoor")->where("code='$brakemachine_no' and shop_id=".$interface['shop_id'])->value("name");
		
		db("SlidingLog")->insert(
			array(
				"card_no"=>$interface['card_no'],
				"create_time"=>date("Y-m-d H:i:s"),
				"error_msg"=>null,
				"behavior_status"=>1,
				"behavior_type"=>1,
				"mobile"=>$interface['mobile'],
				"name"=>$interface["name"],
				"door_code"=>$brakemachine_no,
				"door_name"=>$door_name,
				"descs"=>null,
				"owner_type"=>$interface['owner_type'],
				"shop_id"=>$interface['shop_id'],				
			)
		);
	}
	/**
	 * 新增区域门禁进场记录 失败
	 */
	function add_innerdoor_in_error($interface,$brakemachine_no,$error_msg){
		$brakemachine_no=intval($brakemachine_no);
		$card_no=$interface['card_no'];
		$door_name=db("SlidingDoor")->where("code='$brakemachine_no' and shop_id=".$interface['shop_id'])->value("name");
		db("SlidingLog")->insert(
			array(
				"card_no"=>$interface['card_no'],
				"create_time"=>date("Y-m-d H:i:s"),
				"error_msg"=>$error_msg,
				"behavior_status"=>2,
				"behavior_type"=>1,
				"mobile"=>$interface['mobile'],
				"name"=>$interface["name"],
				"door_code"=>$brakemachine_no,
				"door_name"=>$door_name,
				"descs"=>null,
				"owner_type"=>$interface['owner_type'],
				"shop_id"=>$interface['shop_id'],				
			)
		);
	}
	
	/**
	 * 权限判断
	 * */
	 function auth($interface,$system_set,$brakemachine_no){
	 	if($interface['owner_type']==3){//临时卡
	 		return;
	 	}
	 	if(isset($system_set['s_s_7'])&&!empty($system_set['s_s_7'])){//开启权限验证
	 	 	if(empty($interface['doors_auth'])){//没有权限
	      		action("BehaviorLog/add_error_in_log",[$interface,$brakemachine_no,"暂无权限".$brakemachine_no]);
		   	  	$this->ajax_error("","","暂无权限".$brakemachine_no,false);die;
		 	}else{
			  	$auths= explode(",", $interface['doors_auth']);
			    if(in_array(intval($brakemachine_no), $auths)){
			    	//有权限
			    }else{
			        action("BehaviorLog/add_error_in_log",[$interface,$brakemachine_no,"暂无权限".$brakemachine_no]);
		   	  		$this->ajax_error("","","暂无权限",false);die;
			   }
		 }
	 	}else{// 没开启权限验证
	 	  	//没有权限	
	 	  	return;
	 	}
	 }
}
